import java.util.LinkedList;
import java.util.Queue;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 17655
 * Date: 2025-02-24
 * Time: 16:37
 */
public class test2 {
    /**
     * LeetCode 733 图像渲染
     */


    int[] dx = {0,0,-1,1};
    int[] dy = {1,-1,0,0};

    public int[][] floodFill(int[][] image, int sr, int sc, int color) {
        // 找到当前开始的位置
        int prev = image[sr][sc];
        // 处理边界情况
        if(prev==color){
            return image;
        }
        int m =image.length,n=image[0].length;
        // 每个队列元素里面就只存两个元素一个是横坐标，一个纵坐标
        Queue<int[]> q = new LinkedList<>();
        q.add(new int[]{sr,sc});

        while(!q.isEmpty()){
            int[] t = q.poll();
            int a=t[0],b=t[1];
            image[a][b] = color;
            for(int i=0;i<4;i++){
                int x = a+dx[i],y=b+dy[i];
                if(x>=0 && x<m && y>=0 && y<n && image[x][y]==prev){
                    q.add(new int[]{x,y});
                }
            }
        }
        return image;
    }
}
